﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace DAL
{
    public class Monhoc
    {
        
        //private const String SConn = "Data Source=DUCLINH-PC;Initial Catalog=HOUSMS;Persist Security Info=True;User ID=sa;Password=minhduc";
        private static string SConn = ConfigurationManager.ConnectionStrings["DucLM"].ConnectionString;
        SqlConnection conn = new SqlConnection(SConn);

        #region "Load dữ liệu ra DataGridView"
        public DataSet GetDataSet()
        {
            var _ds = new DataSet();
            var cmd = new SqlCommand("LoadMonHoc", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            var da = new SqlDataAdapter(cmd);
            da.Fill(_ds);
            return _ds;
        }
        #endregion

        #region "Lấy mã môn học từ tên môn học"
        public DataSet LoadMaMonHoc(string tenMonHoc)
        {
            var ds = new DataSet();
            var da = new SqlDataAdapter("LoadMaMonHoc", conn);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.AddWithValue("@TenMonHoc", tenMonHoc);
            da.Fill(ds, "LoadMaMonHoc");
            return ds;
        }
        #endregion

        #region "Xóa môn học"
        public int Delete(string tenMonHoc)
        {
            conn.Open();
            var cmd = new SqlCommand("DeleteMonHoc", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            try
            {
                cmd.Parameters.AddWithValue("@TenMonHoc", tenMonHoc);
                return cmd.ExecuteNonQuery();
            }
            finally
            {
                cmd.Dispose();
                conn.Close();
                cmd.Dispose();
            }
        }
        #endregion

        #region "Thêm mới môn học"
        public int Add(string tenMonHoc, int soTrinh, int ky)
        {
            conn.Open();
            var cmd = new SqlCommand("AddMonHoc", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            try
            {
                cmd.Parameters.AddWithValue("@TenMonHoc", tenMonHoc);
                cmd.Parameters.AddWithValue("@SoTrinh", soTrinh);
                cmd.Parameters.AddWithValue("@Ky", ky);
                return cmd.ExecuteNonQuery();
            }
            finally
            {
                cmd.Dispose();
                conn.Close();
                conn.Dispose();
            }
        }
        #endregion

        #region "Cập nhật thông tin môn học"
        public int Update(string tenMonHoc, int soTrinh, int ky)
        {
            conn.Open();
            var cmd = new SqlCommand("UpdateMonHoc", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            try
            {
                cmd.Parameters.AddWithValue("@TenMonHoc", tenMonHoc);
                cmd.Parameters.AddWithValue("@SoTrinh", soTrinh);
                cmd.Parameters.AddWithValue("@Ky", ky);
                return cmd.ExecuteNonQuery();
            }
            finally
            {
                cmd.Dispose();
                conn.Close();
                conn.Dispose();
            }
        }
        #endregion

        #region Kiểm tra xem môn học đã tồn tại hay chưa"
        public int Check(string tenMonHoc)
        {
            conn.Open();
            var cmd = new SqlCommand("CheckMonHoc", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            try
            {
                cmd.Parameters.AddWithValue("@TenMonHoc", tenMonHoc);
                return cmd.ExecuteNonQuery();
            }
            finally
            {
                cmd.Dispose();
                conn.Close();
                conn.Dispose();
            }
        }
        #endregion

        #region "Lấy số trình của 1 môn học"
        public int GetSoTrinh(string tenMonHoc)
        {
            var conn = new SqlConnection(SConn);
            conn.Open();
            var cmd = conn.CreateCommand();
            cmd.CommandText = "EXECUTE @soTrinh = GetSoTrinh @TenMonHoc";
            try
            {
                cmd.Parameters.AddWithValue("@TenMonHoc", tenMonHoc);
                cmd.Parameters.Add("@soTrinh", SqlDbType.Int);
                cmd.Parameters["@soTrinh"].Direction = ParameterDirection.Output;
                SqlDataReader reader = cmd.ExecuteReader();

                while(reader.Read())
                {
                    Console.WriteLine("reader[\"TenMonHoc\"]=" + reader["TenMonHoc"]);
                }
                reader.Close();
                return (int)cmd.Parameters["@soTrinh"].Value;
            }
            finally
            {
                cmd.Dispose();
                conn.Close();
                conn.Dispose();
            }
        }
        #endregion
    }
}
